import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.font_manager import FontProperties

# 原生python实现2个数组的加法
def python_sum(n):
    a = [i**2 for i in range(n)]
    b = [i**3 for i in range(n)]
    ab_sum = []
    for i in range(10):
        ab_sum.append(a[i]+b[i])
    return ab_sum
# 调用实参运行函数
python_sum(10)
print(python_sum(10))

print('----------------------------------------------------------------------------------------------------------------')

# numpy实现2个数组的加法
def numpy_sum(n):
    a = np.arange(n)**2
    b = np.arange(n)**3
    return a+b

numpy_sum(10)
print(numpy_sum(10))

# numpy的使用，简化代码，提高代码运行效率。
# numpy的数组运算，速度比python的数组运算快很多

import timeit  # 确保已导入timeit模块

# 使用timeit来测试函数执行时间
python_times = timeit.timeit('python_sum(1000000)', globals=globals(), number=1)
numpy_times = timeit.timeit('numpy_sum(1000000)', globals=globals(), number=1)

#绘制对比
charts_data = pd.DataFrame({
    'python_times': [python_times],
    'numpy_times': [numpy_times],
}, index=[0])

# 新增代码：显示对比数据
print("运行时间对比:")
print(charts_data)

# 绘制柱状图展示对比
charts_data.plot(kind='bar', title='Python compare  with NumPy')
plt.ylabel('时间（秒）')
plt.xticks(rotation=0)  # 不旋转x轴标签
plt.show()
